home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48hor2 / utils9.txt < prev    next >
Text File  |  1995-03-31  |  82KB  |  2,154 lines

  1. DOC 1.1 -- UTILS directory documentation 
  2. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  3. NOTE!  This is a plain ASCII text file containing multiple 
  4. documents. You may find it most convenient to view or print this file 
  5. by running the DOC.EXE program (supplied on this disk) on your PC. 
  6. This is the first Goodies Disk to do it this way.  Hope you like it. 
  7. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  8. :GD9 
  9. :Utilities 
  10. :-jkh- 
  11. @@BEAN11     -G 
  12. (Comp.sys.hp48) 
  13. Item: 2147 by bawa@eecs.nwu.edu [Sanjiv Bawa] 
  14. Subj: The Bean Counter Ver 1.1 
  15. Date: 09 Oct 1993 
  16.  
  17. ííííííííííííííííííí The Bean Counter íííííííííííííííííí 
  18.                        Version 1.1 
  19.                    (C) 1993 Sanjiv Bawa 
  20.                     bawa@eecs.nwu.edu 
  21.  
  22. GX GX GX GX GX Version ONLY. 
  23.  
  24. This is a NEW VERSION of THE BEAN COUNTER. 
  25.  
  26. Finally !! Here is a post of The Bean Counter - a money 
  27. manager program. This is version 1.1. If you want to 
  28. track where your money is going this is what you want to 
  29. use. Following is a description of the features of this 
  30. program. 
  31.  
  32. Have fun ! 
  33.  
  34. Noncommercial distribution allowed, provided that this 
  35. copyright message is preserved, and any modified versions 
  36. are clearly marked as such. 
  37.  
  38. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY 
  39. EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
  40. LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
  41. FITNESS FOR A PARTICULAR PURPOSE. 
  42.  
  43. íííííííííííííííííííííííííííííííííííííííí 
  44. VERSION 1.1 SPECIFIC COMMENTS 
  45.  
  46. 1. Fixed a bug that caused the program to crash when 
  47.    expense types were being changed. 
  48.  
  49. 2. Instead of - signs showing a credit in the statements 
  50.    a + sign is used. This is more intuitive. A C or CR is 
  51.    normally used but a C is not as visible in the 
  52.    smallest font mode as a +. 
  53.  
  54. 3. Separated TRANSACTIONS into INCOME and EXPENSES. There 
  55.    are now separate INCOME TYPES which can be created and 
  56.    modified using the MODIFY EXPENSE TYPES and MODIFY 
  57.    INCOME TYPES in the main menu. 
  58.  
  59. The program will now create new two new files in your 
  60. BEAN directory when you first run it. They are TYPES and 
  61. INTYPES and hold information about the EXPENSE and INCOME 
  62. TYPES. 
  63.  
  64. The filename of the version is BEAN11.LIB 
  65.  
  66. The file formats are the same as version 1.0 
  67.  
  68. ííííííííííííííííííííííííííííííííííííííí 
  69. VERSION 1.0 release documentation (unmodified) 
  70.  
  71. After looking through ftp sites everywhere for a program 
  72. that helps manage ones money (an "Expense Manager" I 
  73. believe is what they are called) I decided to write a 
  74. program to help me keep track of my expenses. 
  75.  
  76. It turned out to be quite a reasonably polished program 
  77. so, happily, I am going to release it to the rest of the 
  78. world - if, of course, anybody wants it ..... 
  79.  
  80. WHO WOULD FIND IT USEFUL ? 
  81.  
  82. If you are a normal person who does not have a gazillion 
  83. bucks, you will find the program quite useful in keeping 
  84. track of all your money. Version 1.0 of this program does 
  85. slightly more than a normal personal organizer. 2.0 will 
  86. probably do way more (provided there is any kind of 
  87. interest in the program). 
  88.  
  89. FEATURES: 
  90.  
  91. This program is capable of handling multiple accounts 
  92. (limited only by memory). They can be of two types, 
  93. Credit and Checking. The Credit account type is designed 
  94. for transactions done with credit cards. The Checking 
  95. account type, on the other hand, can be used for 
  96. checking, savings and cash accounts. You can open and 
  97. close accounts at will. 
  98.  
  99. The program allows you to enter simple transactions (Say, 
  100. you spent money on clothes, or deposited a paycheck). It 
  101. also allows you to transfer money between accounts (Say 
  102. you got a cash advance from your VISA and deposited it in 
  103. your checking account). Each transaction has a date, 
  104. Expense type (explained later), Amount and Remarks 
  105. attached to it. 
  106.  
  107. The program allows you to create several different 
  108. EXPENSE TYPES, so you can easily categorize your 
  109. expenses, to figure out exactly where your money is 
  110. going. 
  111.  
  112. The program also allows you to archive old transactions, 
  113. so that thousands of old transactions do not slow down 
  114. the program. The number of transactions that you keep is 
  115. configurable (can be different for each account). 
  116.  
  117. It creates mini statements that you can look at any time. 
  118. You can view 7 transactions at a time (limited by size of 
  119. screen), complete with current balances. 
  120.  
  121. íííííííííííííííííííííííííííííííííííííííí 
  122.  
  123. This is a GX version. It will NOT work on an SX. It will 
  124. NOT crash your SX, however, since it has been written in 
  125. usr RPL. 
  126.  
  127. SETUP 
  128. If you are running the program for the first time SETUP 
  129. and BEAN do the same thing. If you have old files SETUP 
  130. will delete them. To run the program you must have at 
  131. least ONE account and the program really will not let you 
  132. do anything unless you create one. Choose CREATE from the 
  133. first menu that you see, which will be ACCOUNT 
  134. MANAGEMENT. Then, before you edit anything, read the 
  135. following, especially the paragraph subtitled "CREATING 
  136. AN ACCOUNT". (The form is a little tricky because the 
  137. people at HP simply ignored every piece of mail that I 
  138. sent them, so I could not get a hold of the full format 
  139. of the INFORM command) 
  140.  
  141. HOW TO USE THIS PROGRAM 
  142. This program uses the menu systems that are new to the 
  143. GX. It makes the program a lot easier to use. The main 
  144. menu (you will not see it when you run the program for 
  145. the very first time) has the following entries, 
  146. TRANSACTION, TRANSFER, ACCOUNTS, EXPENSE TYPES, ARCHIVE, 
  147. STATEMENT, QUIT. The paragraphs below will explain each 
  148. option. 
  149.  
  150. BASIC PREMISE OF ACCOUNTING 
  151. When money changes hands, a TRANSACTION happens. This 
  152. transaction always happens between two ACCOUNTS. One 
  153. account received money the other loses it. Generally, you 
  154. only keep track of accounts that you own. So, when you 
  155. spend money, say by using your VISA to buy a pizza you 
  156. only care about what happens to your VISA account. In 
  157. this case, the balance goes up and you suddenly owe VISA 
  158. more money. 
  159.  
  160. ORGANIZING THIS PROGRAM 
  161. Assuming you want to keep track of all your expenses 
  162. etc., you want to create several accounts. Most people 
  163. will get away with just creating accounts in the program 
  164. named after their bank accounts and credit cards and one 
  165. or two CASH accounts. Every time you spend money, use a 
  166. credit card, cash a check, or get money from an ATM etc. 
  167. you should record it (assuming you want to keep track of 
  168. things). You can do this by using the TRANSACTION and 
  169. TRANSFER options. Read on to find out how .... 
  170.  
  171. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  172. ACCOUNTS (Create, Modify, Close and Reopen) 
  173. Creating an account is the FIRST thing you have to do. It 
  174. is just a little bit tricky, but if you read the 
  175. instructions, you should have no problems. 
  176.  
  177.      When you choose the Create Accounts, or Modify 
  178.      Accounts option, you will see a screen with 7 items. 
  179.      NAME, TYPE, DATE, BALANCE, ARCH ON, KEEP MTHS, OPEN. 
  180.      There is a default for all except NAME. You have to 
  181.      enter a NAME. 
  182.  
  183.      NAME is the name of the account. Example VISA, AMEX, 
  184.      BANKONE, CASH etc. 
  185.  
  186.      TYPE: There are two types of accounts, credit and 
  187.      checking. Basically, when you look at your statement 
  188.      for the account and see a balance; if you owe that 
  189.      balance it is a credit account (such is the case for 
  190.      credit cards), and if you have that balance is a 
  191.      checking type account (which is the case for 
  192.      checking, savings and CASH accounts). To select a 
  193.      checking type account enter "-" (the default) or 
  194.      enter "+" for a credit type account. 
  195.  
  196.      DATE is the first date that you are going to ever 
  197.      going to enter a transaction for. It does not have 
  198.      to be the date you opened the account, just the very 
  199.      first day, that you want to record in your GX. See 
  200.      BALANCE 
  201.  
  202.      BALANCE is the starting balance on the DATE that you 
  203.      just entered (see above). The final balance will be 
  204.      computed using this starting BALANCE and the 
  205.      transactions that you enter. 
  206.  
  207.      ARCH ON: When you run ARCHIVE it will attempt to 
  208.      archive transactions so that the very first 
  209.      transaction left in the account is the day *after* 
  210.      ARCH ON. Obviously, if your bank always sends to 
  211.      statements at the end of the month you should enter 
  212.      31. If, say, statements are from the 16th of the 
  213.      previous month to the 15th of this month, enter 15. 
  214.      This helps keeping things in sync, so you do not 
  215.      have haphazard beginning dates when you ARCHIVE 
  216.      transactions. 
  217.  
  218.      KEEP MTHS is the numbers of months that it will keep 
  219.      online when you do an ARCHIVE. The higher this 
  220.      number, the slower things will get, since you will 
  221.      have too many transactions in the list. Too small a 
  222.      number will mean that you do not have enough 
  223.      transactions online. 
  224.  
  225.      OPEN? is if this account is open for business. If 
  226.      you creating it, it probably is. No transactions are 
  227.      allowed on closed accounts. 
  228.  
  229. CLOSE closes an open account. NOTHING is deleted 
  230. REOPEN reopens a closed account 
  231.  
  232. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  233.  
  234. TRANSACTION 
  235.      Self explanatory. Every time you spend money, 
  236.      receive a paycheck etc., you should select this 
  237.      option. See TRANSFER. Remember to use NEGATIVE 
  238.      numbers for any money that you receive. This may be 
  239.      confusing at first, but if you think about it, it 
  240.      makes sense. If a positive number is money outflow, 
  241.      a negative number would be inflow. Thus, your 
  242.      paycheck would, for example, be recorded as -800. 
  243.      Future versions, will fix this. 
  244.  
  245. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  246.  
  247. TRANSFER 
  248.      Do not use the TRANSACTION option if you transfer 
  249.      money between accounts. Say if you get a cash 
  250.      advance from you VISA and deposit it in your 
  251.      checking account, except for bank fees, you have not 
  252.      spent any money. 
  253.  
  254. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  255.  
  256. EXPENSE TYPES 
  257.      To categorize your transactions you can create, 
  258.      modify or delete EXPENSE TYPES. There are a few 
  259.      created for you already. You can make more. Try not 
  260.      to delete any. I have not really put in the code to 
  261.      delete a type, so it just creates a space in the 
  262.      menu..... 
  263.  
  264. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  265.  
  266. ARCHIVE 
  267.      Puts old transactions in an archive. The archive 
  268.      filename is the account filename + .CL. The starting 
  269.      balance is adjusted properly. Note, that in this 
  270.      version, nothing can be done with this archive file. 
  271.  
  272. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  273.  
  274. STATEMENT 
  275.      Creates a statement, with balance for you to see. It 
  276.      starts off the very bottom, i.e. the very last 
  277.      transaction to happen in displayed at the very 
  278.      bottom. Use the up arrow and down arrow to go up and 
  279.      down. Any other key get you out. Yes, it is slow, 
  280.      but Version 2.0 will have this part written in sys 
  281.      RPL so it will be faster. 
  282.  
  283. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  284.  
  285. **Special Instructions** 
  286. This is not a 100% perfect program. It is on the slowish 
  287. side with obvious defects in the ACCOUNT create/modify 
  288. part. You can get it to crash by doing things that should 
  289. not be done, i.e creating two accounts with the same 
  290. name, creating an account with the name ACCTS etc. There 
  291. will be many more checks etc. in the next version, and it 
  292. will be faster with more functionality. 
  293.  
  294. If you have any comments on the program, its 
  295. functionality or its documentation, please let me know at 
  296. bawa@eecs.nwu.edu. Please put "The Bean Counter" in the 
  297. subject line. 
  298.  
  299. Thank you for your support. 
  300. @CD21 
  301. Change Directory 
  302. Version 2.1, January 1993 
  303. by Dan Kirkland 
  304.  
  305. CD (Change Directory) is a library that allows you to 
  306. view, change, create, and destroy directories graphicly. 
  307.  
  308. INSTALLING THE CD LIBRARY 
  309.  
  310. Transfer the CD library to your HP48. 
  311. Put the library on the stack. 
  312.  
  313. Enter the port number were you want to store the CD 
  314. library and press STO . 
  315.  
  316. Turn the HP48 off and back on again to allow the CD 
  317. library to attach. 
  318.  
  319. Purge the variable with the original copy of the CD 
  320. library. 
  321.  
  322. REMOVING THE CD LIBRARY 
  323.  
  324. Go to the HOME directory. 
  325. Enter 1122 and execute DETACH . 
  326. Enter 1122 tagged with the port number which the CD 
  327. library is stored and execute PURGE. ( or :&:1122 PURGE) 
  328.  
  329. USING THE CD LIBRARY 
  330.  
  331. Go to the library menu and press the CD menu key. 
  332. This will give you a menu with following keys. 
  333.  
  334. CD - The main program. 
  335. ABOUT.CD - Title screen. 
  336.  
  337. You can run CD by entering this menu and pressing the CD 
  338. key or by just entering the letters CD. 
  339.  
  340. The first time you run CD it will scan for all your 
  341. directories and store them in a variable in your HOME 
  342. directory called 'CD.Data'. 'CD.Data' is used for faster 
  343. drawing of the tree. 
  344.  
  345. If you create or destroy any directories outside of the 
  346. CD program, you will need to SCAN the directories again 
  347. to have an accurate picture of your directories. 
  348.  
  349. CD MENU KEYS 
  350.  
  351. HOME  - Highlights the HOME directory. 
  352. SCAN  - Scans the directories and updates 'CD.Data'. 
  353. CRDIR - Create a subdirectory in the highlighted 
  354.         directory. 
  355. PGDIR - Purge the highlighted subdirectory. 
  356.  
  357. OTHER ACTIVE KEYS 
  358.  
  359. THE ARROW KEYS - Move highlight from one directory to 
  360.                  another. 
  361. ENTER          - Exit CD into highlighted directory. 
  362. ON (ATTN)      - Exit CD without changing directory. 
  363. +/-            - Toggle menu on/off (menu keys stay 
  364.                  active). 
  365.  
  366. Dan Kirkland 
  367.  
  368. Email:   kirkland@ee.utah.edu 
  369. @@CGENERIC   SG 
  370. CGENERIC - used by FONEMAN. 
  371. @@COMPRESS   SG 
  372. (Comp.sys.hp48) 
  373. Item: 2923 by ftg0673@tamsun.tamu.edu [Rick Grevelle] 
  374. Subj: High Performance Data Compression 
  375. Date: 08 Dec 1993 
  376.  
  377. [Note: This is an updated version of the RF (Redundancy 
  378.  Fighter) programs which have been on this and on 
  379.  previous Goodies Disks.  Although the compression logic 
  380.  is the same as RF's, the memory handling is much safer, 
  381.  and the decompression is much faster.  Also, it creates 
  382.  Library Objects instead of strings.  Which should you 
  383.  use: RF, or COMPRESS?  Try both, and decide which you 
  384.  like better.  -jkh-] 
  385.  
  386. These two routines are the first stage of a multipass 
  387. high performance data compression scheme.  The run length 
  388. oriented algorithm is a variation of the one originally 
  389. implemented by Lutz Vieweg.  For the compression routine 
  390. the final 'BYTES COMPRESSED' readout pertains to the 
  391. actual number of bytes saved.  I am interested in 
  392. expanding the base of beta testers on a project nearing 
  393. completion at this time, and as a consequence I shall be 
  394. prereleasing segments of the main library but without 
  395. most of their documents, and lacking full functionality. 
  396. For example, the multiple pass feature has been disabled 
  397. here.  I would be indebted to any individual who might 
  398. discover, and report, any bugs to me.  Particularly if 
  399. you could explain to me how I could recreate the 
  400. anomalies.  Future versions are being discussed and may 
  401. even be self evaluating in order to obtain maximum 
  402. compression for the varying data structures within the 
  403. 48's environment. 
  404.  
  405. Rick Grevelle 
  406. (409) 774-1169 
  407. ftg0673@tamsun.tamu.edu 
  408. @@CROLDX     SG 
  409. CROLDX - used by FONEMAN. 
  410. @@DBASE      -G 
  411. (Comp.sys.hp48) 
  412. Item: 1387 by _mtodd@hpcvbbs.external.hp.com 
  413.       [Matthew Todd Eckrich] 
  414. Subj: HP48GX Database Application 
  415.  
  416. BYTES:   # CE11h, 4654.5 
  417. Date:    24 February 1993 
  418.  
  419.    The following are prominent features of this database 
  420.    application for an HP48G/GX: 
  421.   
  422.    * Written completely in System RPL. 
  423.   
  424.    * Allows multiple databases. 
  425.   
  426.    * Allows browsing titles using the internal browser.  
  427.   
  428.    * Entries exceeding the display boundaries can be 
  429.    scrolled. 
  430.   
  431.    * Repeat key features. 
  432.   
  433.    * All entries are sorted. 
  434.     
  435.    * Databases accessible from any directory. 
  436.   
  437.     
  438.    Each database consists of a number of records. Each 
  439. record consists of a set number of fields determined when 
  440. the database is created. The physical structure of each 
  441. database is a list of list(s) of strings(s). Linefeeds 
  442. are allowed in strings. The databases are stored in the 
  443. hidden directory ( #640BEh SYSEVAL to enter -- caution: 
  444. careless use of SYSEVAL can cause a memory loss). 
  445.   
  446.    To use, install the library and execute XQDB. It will 
  447. first prompt to define a new database. 
  448.     
  449.    When the browser is active to view the records in a 
  450. database the keyboard is defined as follows: 
  451.   
  452. 11.1  DB        Browses databases and brings up database 
  453.                 menu 
  454.   
  455. 12.1  FIND->    Brings up menu for search of next 
  456.                 record(s). Note that a key search matches 
  457.                 strings in just the first field of each 
  458.                 record. 
  459.   
  460. 13.1  FLD->     Browses records by the next field. 
  461.   
  462. 14.1  ADD       Adds record. 
  463.   
  464. 15.1  DEL       Deletes record. 
  465.  
  466. 16.1  EDIT      Edits record. 
  467.   
  468. 25.1  UPARROW   Advances highlight up one record. 
  469. 25.2            Advances highlight up one page. 
  470.                 (left-shifted UPARROW) 
  471.  
  472. 25.3            Advances highlight to top record. 
  473.                 (right-shifted UPARROW) 
  474.   
  475. 35.1 DOWNARROW  Advances highlight down one record 
  476. 35.2            Advances highlight down one page. 
  477.                 (left-shifted DOWNARROW) 
  478.  
  479. 35.3            Advances highlight to last record. 
  480.                 (right-shifted DOWNARROW) 
  481.   
  482. 51.1 ENTER      Views currently highlighted record in 
  483.                 full-screen mode, redefining the keyboard 
  484.                 as explained in next section. 
  485.   
  486. 61.1 ALPHA      Allows search of records by first letter 
  487.                 of current field. 
  488.  
  489.                 Thus, ALHPA N advances to first record 
  490.                 beginning with the letter N. 
  491.   
  492. 91.1 CANCEL     Exits. 
  493.     
  494.     
  495.    When a record is being viewed in the full screen mode, 
  496. the keyboard is defined as follows: 
  497.   
  498. 11.1  FIND->    Brings up menu for search of next 
  499.                 record(s). Note that a KEY search matches 
  500.                 strings in just the first field of each 
  501.                 record. 
  502.   
  503. 12.1  STK->     Places fields of current record on stack. 
  504.                 Fields can then be entered into other 
  505.                 records when editing by using the STK 
  506.                 key. 
  507.  
  508. 13.1  COPY      Creates duplicate of current record. 
  509.  
  510. 14.1  ADD       Adds record. 
  511.  
  512. 15.1  DEL       Deletes record. 
  513.  
  514. 16.1  EDIT      Edits record. 
  515.   
  516.   
  517. 25.1  UPARROW   Advances to previous record. 
  518.  
  519. 25.3            Advances to top record. (right-shifted 
  520.                 UPARROW) 
  521.   
  522. 35.1 DOWNARROW  Advances to next record. 
  523. 35.3            Advances to last record. (right-shifted 
  524.                 DOWNARROW) 
  525.   
  526. 51.1 ENTER      Starts Browser mode highlighting the 
  527.                 current record. 
  528.   
  529. 91.1 CANCEL     Exits. 
  530.   
  531.   
  532.         If the current record exceeds the display 
  533.         boundaries, (with repeat key feature) 
  534.   
  535.         24.1 VAR        Scrolls display up 
  536.   
  537.         26.1 NXT        Scrolls display down 
  538.   
  539.         34.1 LEFTARROW  Scrolls display left 
  540.   
  541.         36.1 RIGHTARROW Scrolls display right. 
  542. @@FALSECLR   SG 
  543. From: Jeoff Krontz  <jeoff@tamsun.tamu.edu> 
  544. Subject: FalseClear Shell v2.0 
  545.  
  546. This is Rick Grevelle's famous falseclear routine put 
  547. into a shell. It enables you to use your calculator just 
  548. like normal until you want to press [ON]-[A]-[F]. Once 
  549. you press thsee keys, the memory will be falsely cleared 
  550. and your directory will appear empty. But the routine is 
  551. still in memory and will catch the next [ON]-[A]-[F] and 
  552. will continue to do so until you do an [ON]-[C]. 
  553.  
  554. I have also made the home directory clear (not really) 
  555. upon falsely clearing the memory. This is so that a 
  556. sneaky professor doesn't clear your memory and then press 
  557. [VAR] so that he/she sees that it did not really clear. 
  558.  
  559. Press [ON]-[B] to instantly see your directory reappear. 
  560. Note that you may still use your calc like normal when 
  561. the directory is cleared. You may even run programs by 
  562. typing their names in on the command line. They are 
  563. simply "hidden". To see how this is done take a look at 
  564. the source code that I have included. 
  565.  
  566. There are a few things to take note of: this program is 
  567. not perfect. 
  568.  
  569. This program is limited in what it can do by the way HP 
  570. does its key handling. 
  571.  
  572. 1. The [ON]-[A]-[F] trap will only work when you are on 
  573.    the command line or when the stack is visible. (It 
  574.    will not work in the interactive stack) 
  575.  
  576. 2. Therefore, it will not work while running another 
  577.    program or using one of the multi-line (5,6,7) stack 
  578.    programs out there. 
  579.  
  580. 3. If you type keys real fast and then hit [ON]-[A]-[F] 
  581.    then your memory will be cleared. You are actually 
  582.    hitting [ON]-[A]-[F] while the key buffer is being 
  583.    handled and not while my program is trapping your 
  584.    keypresses. 
  585.  
  586. 4. To do an [ON]-[C] or [ON]-[Anything], press the key 
  587.    first, and then [ON]. Note that this will not work 
  588.    with [ON]-[A]-[F].  Also note that [ON]-[C], 
  589.    [ON]-[D], and [ON]-[Space] will abort FalseClear. 
  590.  
  591. This is a complete re-write of the version Rick posted 
  592. three weeks ago which had some shortcomings. This 
  593. version will work on both the SX and GX (or S,G). 
  594.  
  595. I have also included the source code so that people can 
  596. see how it's all done. I have commented the machine 
  597. language part heavily for those unfamiliar with ML key 
  598. handling. 
  599. @@FONEMAN    SG 
  600.    From: "Jeoffrey M. Krontz" <jmk2088@tamsun.tamu.edu> 
  601. Subject: Fone Manager v1.0 
  602.    Date: Tue, 5 Oct 93 
  603.  
  604. The Fone Manager v1.0 
  605. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  606. I wrote this program over a period of 6 months, 
  607. constantly improving it and making it the best phone 
  608. number and address manager ever. It is definitely the 
  609. fastest program of its type that I have ever seen, and I 
  610. looked at every one I could find to get ideas from them 
  611. and to learn their weaknesses so that this program would 
  612. make the same mistakes. 
  613.  
  614. All of the graphical routines and display routines are 
  615. written in machine language. The rest is entirely 
  616. system-rpl. The Fone Manager works on any G or S series 
  617. Hp48 up through revision "M". 
  618.  
  619. The Fone Manager is called that because I originally 
  620. started it out to be just that. However, it is actually 
  621. a database program that can store information of any 
  622. type. 
  623.  
  624. Here are a list of the main features this program has 
  625. that others don't or that are much better than others: 
  626.  
  627.   * Wonderful user interface that makes the program easy 
  628.     to use, not complicated and complex like most others. 
  629.  
  630.   * Lets you use any editor you like. It has automatic 
  631.     presets for QED or Stringwriter, but it will also let 
  632.     you use any editor you might have. I have never seen 
  633.     this option in any other program and to me it is the 
  634.     worst aspect of other programs í  data entry is too 
  635.     slow. 
  636.  
  637.   * Lightning quick display routines. You can hold down 
  638.     an arrow key and scroll through a list of fifty names 
  639.     in about 11 seconds. This is a display of the entire 
  640.     record, not just a one line title. 
  641.  
  642.   * Has a search routine which scans the entirety of each 
  643.     record for the search string, not just a specific 
  644.     line of each record. This takes under one second to 
  645.     scan through a fifty-record list for a string that 
  646.     appears in the last record (worst-case). That's 
  647.     quick! 
  648.  
  649.   * The find routine has its own quick command line that 
  650.     doesn't interfere with the rest of the screen. In 
  651.     other words, it doesn't use the ugly HP command line. 
  652.  
  653.   * Uses the small font to display 7 lines of data with 
  654.     about 25 characters to a line. This is a lot more 
  655.     than other programs which use a bigger font which 
  656.     makes you unable to display the last line of your 
  657.     address without it wrapping off the screen. 
  658.  
  659.   * Under 3500 bytes!! 
  660.  
  661.  
  662. Just to see how fast Fone Manager really is, check out 
  663. these stats. Below are comparison times of the time it 
  664. takes to scroll through every entry in a 56 person fone 
  665. list: 
  666.  
  667. Roldx v6.0 
  668. ÄÄÄÄÄÄÄÄÄÄ 
  669. 23 seconds (highlight-bar mode) 
  670. 43 seconds (full screen mode) 
  671.  
  672. Fone Manager / Database 
  673. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  674. 12 seconds (full-screen mode) 
  675.  
  676. This package contains the following HP binaries 
  677. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  678. foneman.lib: the fone manager library 
  679.  
  680. cgeneric: a program to convert other fone-lists to this 
  681.           format 
  682.  
  683. croldx: a program to convert roldx format fone-lists to 
  684.         this format 
  685.  
  686.  
  687. Conversion Programs 
  688. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  689. I have included two programs to convert fone-lists made 
  690. with other programs to the format used in this program 
  691. which is simply a list of strings. The generic program 
  692. goes through a list made by another program and takes out 
  693. any strings it finds, putting them into individual 
  694. records to be used by this fone-manager. The roldx 
  695. converter takes a list made with roldx and converts it to 
  696. my format. If your fone-list is already a list of 
  697. strings then don't worry, it will work here. Just put 
  698. your list on the stack and then run the appropriate 
  699. conversion program. Then use the STO command explained 
  700. below to store your list into the Fone Manager. 
  701.  
  702.  
  703. Notes on Inner Workings 
  704. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  705. Fone Manager stores your fone list out of site in the 
  706. Hidden directory. There are also no unsightly parameter 
  707. files to get stored in you directories. It uses user 
  708. flags 40-42 to keep track of your personal editor. The 
  709. Fdata variable, stored in the Hidden directory, is a list 
  710. of strings. Each record is stored as a string in this 
  711. list. 
  712.  
  713.  
  714. Commands in the Library 
  715. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  716. Fone Manager is distributed in library form, taking up 
  717. slightly less than 3500 bytes. This library contains 
  718. four programs: 
  719.  
  720.   FONE í  runs Fone Manager 
  721.   RCL  í  recalls phone list so that you can back it up 
  722.   STO  í  stores a new phone list into the Manager 
  723.   DEL  í  deletes your phone lists from the Hidden 
  724.           Directory. This is used to free up space or so 
  725.           that you may create a new phone list. 
  726.   (simple enough) 
  727.  
  728.  
  729. Inside the Fone Manager 
  730. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  731. Fone Manager contains 6 commands: 
  732.  
  733.   ADD   í  add a record 
  734.   EDIT  í  edit a record 
  735.   DEL   í  delete a record (can also use the DEL key) 
  736.   FIND  í  find a record (search for a string) 
  737.   SETUP í  choose your editor (QED/other, StringWriter, 
  738.            HP48 editor) 
  739.   EXIT  í  exit Fone Manager 
  740.  
  741.  
  742. ADD: 
  743.   This command will let you enter the editor of you 
  744. choice and create a new record. This record will be 
  745. inserted into the main file in alphabetical order 
  746. automatically. The first line of the record determines 
  747. the order. You may have as many lines of data as you 
  748. wish, however only 7 will show up on the main screen of 
  749. Fone Manager. When using the HP48 editor, use 
  750. right-shift "." (right-shift period) to go to the next 
  751. line. If you press on from the HP48 editor, the record 
  752. will be aborted and not saved. 
  753.  
  754. EDIT: 
  755.   This command lets you edit the current record you are 
  756. on. You will be put into the editor of your choice. 
  757. Your record will be re-alphabetized automatically when 
  758. you are through editing. 
  759.  
  760. DEL:   
  761.   This deletes the current record from the file. You 
  762. will be prompted to make absolutely sure that you want to 
  763. delete it. The DEL key on the Hp48 keyboard does the 
  764. same thing this command does. 
  765.  
  766. FIND: 
  767.   This command enables you to search records for a 
  768. string. When pressed, a special miniature command line 
  769. comes up in place of the menu labels and you are prompted 
  770. to enter the search string. Enter the search string and 
  771. press enter. Fone Manager will jump to the first record 
  772. and start searching from that point. It searches the 
  773. entire record for the search string, not just the first 
  774. line. It will search through the records until the 
  775. string is found, and then it will make the record 
  776. containing the string the new current record. If the 
  777. string is not found you will be returned to the record 
  778. from which you started the search. Pressing the NXT key 
  779. will find the next occurrence of the string after the 
  780. record you are currently on. 
  781.  
  782. SETUP: 
  783.   This command shows you a screen of information to allow 
  784. you to choose the editor to use with Fone Manager. Your 
  785. choices are QED, StringWriter, and the Hp48 editor. Pick 
  786. the number of the choice you want to use. This setting 
  787. will be saved using using user flags 40-42. It will 
  788. remain until the calculator is warmstarted or you run 
  789. Setup again to change the editor. DO NOT change these 
  790. flags yourself. Fone Manager has precautions built in to 
  791. handle this, but don't press your luck. If this is a 
  792. problem for anyone, let me know and I can change the 
  793. flags used. 
  794.  
  795.    When QED is selected as the editor to be used, setup 
  796. will look for a variable named "QED.o" before it will let 
  797. you select it as your editor. If this variable does not 
  798. exist then you will get an error message. This is the 
  799. normal name for the QED executable to have. If you have 
  800. QED in a library, have the QED.o variable named something 
  801. else, or want to use a different editor with Fone 
  802. Manager, then put the name of the file to run in the 
  803. variable "QED.o". For instance, to use an editor named 
  804. FOO, store 'FOO' in "QED.o". Fone Manager runs whatever 
  805. is in this file when it goes to an editor. So, putting a 
  806. global variable or xlib in this variable will cause it to 
  807. execute when QED.o is called. Once this is done, QED can 
  808. be selected from the setup menu. If you have the normal 
  809. QED installed, everything will be done automatically. 
  810.  
  811.    When StringWriter is selected, Fone Manager looks to 
  812. see if library 1303 (StringWriter) is stored in a port. 
  813. If not, you will see an error message. Install 
  814. StringWriter into your Hp before using SETUP. 
  815.  
  816.    If you select the Hp48 editor, then you will be using 
  817. the built-in editor of the Hp48. 
  818.  
  819. EXIT: 
  820.   Exits Fone Manager 
  821.  
  822.  
  823.  
  824. Hard Key Assignments 
  825. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  826.  
  827. arrow keys í   scroll through the records of your phone 
  828.                list (keys may be held down for 
  829.                lightning-quick repeat action) 
  830.  
  831. left-shift  / arrow keys í  jump to first or last record 
  832.                             depending on which 
  833.  
  834. right shift / arrow keys    arrow key was pressed. 
  835.                             (up, right  : last record) 
  836.                             (down, left : first record) 
  837.  
  838. DEL í  deletes current record. you WILL get an "Are you 
  839.        Sure?" prompt. 
  840.  
  841. NXT í  searches for next occurence of search string 
  842.  
  843. EVAL í  redraws screen if necessary. (Very wide strings 
  844.         could possibly mess up the screen border I have 
  845.         set up) 
  846.  
  847. ON  í  leaves Fone Manager 
  848.  
  849. OFF í  turns calculator off 
  850.  
  851.  
  852. **Note:  When you first run Fone Manager, the record you 
  853. see will be a help screen telling you the hardkey 
  854. assignments. Once you enter a record, however, you will 
  855. not see this record again if you use a right/left shifted 
  856. arrow to jump to the last record. This record is 
  857. actually the last record + 1. If you ever need help 
  858. again, jump to the last record and then press the right 
  859. or up arrow key. This will advance you the the VERY last 
  860. record, the help screen. You could change this record if 
  861. you wanted, but it would not be accessible by jumping to 
  862. the last record. This record is also not searched when 
  863. using FIND. So don't change it, there is no need. 
  864.  
  865. This program is freeware. I don't expect any $ for it, 
  866. just the comments of those who enjoy it. Anyone with 
  867. suggestions for improvements or just general comments, 
  868. may reach me at the following email address: 
  869.  
  870. jeoff@tamsun.tamu.edu 
  871.  
  872. Enjoy Fone Manager and let me hear your comments. 
  873.  
  874. I will be supporting this program, so any comments or 
  875. bugs, etc will be fixed ASAP. 
  876. @@GPRT       SG 
  877.     Éííííííííííííííííííííííííííííííííííííííííííííííí» 
  878.     º IMPROVED PRINTING OF OBJECTS ON THE HP 82240A º 
  879.     º                  by Joe Horn                  º 
  880.     èííííííííííííííííííííííííííííííííííííííííííííííí¼ 
  881.  
  882.  Mini-Instructions: Either (a) Run GPRT alone, for 
  883.  normal-width printing, or (b) run ->STW first and then 
  884.  GPRT, for full-width printing. 
  885.  
  886. gibbonscr@yvax.byu.edu [Carl Robert Gibbons] writes: 
  887.  
  888. > It [the HP 82240A printer] still won't print most of 
  889. > the greek letters, though (except for alpha, beta, and 
  890. > mu.)  I wonder if anyone has written a program which 
  891. > will print _any_ of the HP48's characters to the 
  892. > HP82240A printer. It would have to use the "print 
  893. > graphics data" printer commands... 
  894.  
  895. Good idea!  And it works great. Here's my first go at 
  896. it. 
  897.  
  898. úÄÄÄÄÄÄ¿ 
  899. 3 GPRT 3  Graphically PRinT. Works like PR1 but uses 
  900. àÄÄÄÄÄÄù  graphic mode. Handles newline characters 
  901. correctly, unlike ->GROB PR1. 
  902.  
  903. Especially useful for printers OTHER than the 82240B, 
  904.   e.g. the older 82240A, or Epson & LaserJet printers 
  905.   (with the appropriate EPSPRINT or PCLPRINT library 
  906.   installed in the HP48). 
  907.  
  908. INPUT: Any object. 
  909.  
  910. OUTPUT: Printer: Object is printed as it would look on 
  911.                  the HP48. 
  912.         Stack: None (object is dropped, unlike PR1) 
  913.  
  914. Although you could more easily use Brian Maguire's ->GRB 
  915. command from his UITL library (GD8), it uses too much 
  916. memory to turn a long program into a huge graphic object. 
  917.  
  918. Warning: If you use this to print a program that contains 
  919. any object wider than 27 characters, such as a long 
  920. string or complex number, the printer will break up the 
  921. line in the way wide *graphics* are broken into multiple 
  922. sections, since GRPT is printing entirely in graphics 
  923. mode. 
  924.  
  925. You could change the two occurrences of 2 ->GROB in the 
  926. program to 1 ->GROB, and then objects could be very long, 
  927. since they'd be printed in the tiny menu-size font. But 
  928. then you'd lose all your lower-case letters, as well as 
  929. the ability to read the printout!  Of course, if you 
  930. change the two occurrences of 2 ->GROB to 3 ->GROB, then 
  931. the results will be larger characters and an equivalent 
  932. of double spacing. Although cute, it eats thermal paper. 
  933.  
  934. Matter of fact, being a frugal sort, and hating to waste 
  935. thermal paper, I wrote the following program to force the 
  936. decompiler to use a line width of 27, which is the most 
  937. that the thermal printer can handle. So if you want to 
  938. use GPRT to list programs, and if you want to use the 
  939. full width of the thermal printer, run the following 
  940. ->STW ("to string, wide") *first*, and then run GPRT. 
  941. Unfortunately, it's in System RPL. Fortunately, it works 
  942. on any HP48 version to date. 
  943.  
  944. úÄÄÄÄÄÄÄ¿ 
  945. 3 ->STW 3 (called TOSTW on this disk) 
  946. àÄÄÄÄÄÄÄù 
  947.  
  948. INPUT: Any object 
  949. OUTPUT: Same as would be obtained from "" +, except 
  950.         newlines are inserted to create 27-char lines, 
  951.         not the usual 19-char lines. 
  952.  
  953. -Joseph K. Horn-   EQU   akcs.joehorn@hpcvbbs.cv.hp.com 
  954. @@INFO48     S- 
  955. INFO48, an informator for the HP48sx 
  956. by felson_adj@csusys.ctstateu.edu 
  957.  
  958. [For S/SX only; use Memory Browser on G/GX instead] 
  959.  
  960. This is my first attempt at system rpl programming... but 
  961. I think it turned out pretty usefull. 
  962.  
  963.  
  964. function keys: 
  965.   up, down arrow        move cursor line 
  966.   left shift up, down   move by screenfulls 
  967.   right shift up, down  go to first or last line 
  968.   alpha                 alphanumeric search 
  969.   enter                 for directory, go into it 
  970.                         for link, dereference and go there 
  971.                         for anything else, call HP editor 
  972.   backspace             go back one directory. can only 
  973.                           return to directory info48 was 
  974.                           started from, (see updir, home) 
  975.   leftshift updir       go to parrent of current 
  976.   rightshift home       go to root directory 
  977.  
  978. menu commands 
  979.   CREAT                 create object, initialy with a 
  980.                           null string 
  981.   CRDIR                 create dir 
  982.     leftshift CRDIR     convert object to a directory 
  983.     rightshift CRDIR    convert single item directory to 
  984.                           an object 
  985.   CRLN                  create link 
  986.                           go to target, hit CRLIN menu 
  987.                           key or ON/abort to abort 
  988.    leftshift CRLN       edit link 
  989.   COPY                  copy current object elsewhere... 
  990.                           go to destination and hit COPY 
  991.                           menukey 
  992.    leftCOPY             reverse.... current object 
  993.                           receives contents of selected 
  994.                           object 
  995.   MOVE                  move current object elsewhere... 
  996.                           go to other location and hit 
  997.                           put/^ to put object above 
  998.                           cursorline, or put \v to put 
  999.                           object below cursorline. 
  1000.     left-shift MOVE     get object from elsewhere and put 
  1001.                           above cursor 
  1002.     right-shift MOVE    get object from elsewhere and put 
  1003.                           below cursor 
  1004.   RENAME                just like it sounds 
  1005.  
  1006.   { move menu keys on second line } 
  1007.   SORT                  SORT, thanks to Joe Horn's 
  1008.                           quicksort, 99% of time spent 
  1009.                           doing XEQORDER 
  1010.   EXIT                  not really needed. ON/ABORT does 
  1011.                           same thing 
  1012.  
  1013.   reorder operations are really really really slow. 
  1014.   Please be patient... "REORDERING" message displayed to 
  1015.   let you know INFO48 hasn't crashed. 
  1016. @@LASER66    PC 
  1017. LASER66.COM, a little Laser Printer utility. 
  1018.  
  1019. Many documents (including SMTK.DOC on this disk!) are 
  1020. formatted for 66 lines per page. But the HP LaserJet 
  1021. (and other printers, I suppose) default to 60 lines per 
  1022. page. It can be changed from the front panel, but that's 
  1023. a hassle. Just run LASER66 on your PC, and your laser 
  1024. printer will be set to 66 lines per page until the next 
  1025. RESET or power down. 
  1026.  
  1027. Try it: 
  1028.  
  1029.     LASER66 
  1030.     TYPE SMTK.DOC > PRN 
  1031.  
  1032. Ahh, beautiful.    -jkh- 
  1033. @@MEMU       S- 
  1034. (Comp.sys.hp48) 
  1035. Item: 48 by kevin@moon.wustl.edu [Kevin Ruland] 
  1036. Subj: MEMU now works on rev J's  [but not G/GX] 
  1037. Date: 19 Feb 1993 
  1038.  
  1039. The bad pointer that caused the bomb in rev J calcs was 
  1040. found by Mika. I made the correction and had it tested. 
  1041. It works now.  It reportedly works on rev D and J calcs 
  1042. and does not cause warm starts with QED nor [GRAPH]. 
  1043. Thanks for helping me find the problems. 
  1044.  
  1045. [But time marches on... MEMU crashes the G/GX!  -jkh-] 
  1046.  
  1047. MEMU - not just another memory program. 
  1048.  
  1049. Yes, I too wrote a graphic display of memory usage. 
  1050. Actually I combined the best of MEMVIEW by Dan Kirkland 
  1051. and the PBYTES by Detlef Mueller. I call it MEMU for 
  1052. memory usage.  It displays a bar graph representing 
  1053. system ram useage, including any merged ram cards, as 
  1054. well as free and used bytes, and a status line for both 
  1055. ports.  The port status line will display any of "EMPTY", 
  1056. "size MERGED", "size RAM free", or "size ROM free".  Here 
  1057. "RAM" and "ROM" indicate both the r/w status and that the 
  1058. memory is "free".  MEMU is slightly larger that MEMVIEW 
  1059. (576 bytes compaired to 374), but I find it much more 
  1060. informative. 
  1061.  
  1062. I'd be happy to send the source to anyone interested. 
  1063.  
  1064. Thanks Detlef for making sysRPL enjoyable. 
  1065.  
  1066. Kevin Ruland 
  1067. kevin@rodin.wustl.edu 
  1068. @@PCT.LIB    S- 
  1069. "PC TOOLS LIBRARY" 
  1070.  
  1071. Documentations will follow, because I think that hacking 
  1072. stuff should be provided with some. Anyway, it's seem 
  1073. they'ra safer than the ones on horn7/FRANCE. 
  1074.  
  1075. P.C.T : pctools lib, ID 986. Essential if you got a 128 
  1076. card or two, just manage libs from ports to mem,IO... 
  1077.  
  1078. Have fun !!! 
  1079.  
  1080. [To date, no documentation has followed. You are on your 
  1081. own with this one!  -jkh-] 
  1082.  
  1083. souiry@ismea.imt-mrs.fr or souiry@147.94.33.1 
  1084. @@PIM100     SG 
  1085. (User.programs) 
  1086. Item: 372 by _nortaneous at hpcvbbs.cv.hp.com 
  1087. Author: [Jason Christopher Emery] 
  1088.   Subj: Personal Information Manager 
  1089.   Keyw: address information data phone 
  1090.   Date: Tue Mar 24 1992 20:27  
  1091.  Lines: 17 
  1092.  
  1093. Here's a quick, small graphical PIM. (Personal 
  1094. Information Manager) It's designed to allow for entry of 
  1095. phone numbers, addresses, names, and brief notes. The 
  1096. main point to the program is to provide a quick, easy way 
  1097. to store and retrieve information. 
  1098.  
  1099. There's a very remote possibility there's still some bug 
  1100. out there but the again, there always is. A small TXT 
  1101. file is included in the directory to show some 
  1102. information on the PIM. 
  1103.  
  1104. If you ever need to backup data, all you have to do is 
  1105. copy the DATA variable to wherever you need it. That's 
  1106. the only place user information is stored. Remember, as 
  1107. with most programs, only run the intended startup 
  1108. program(s). Running something else could result in some 
  1109. big problems. I don't expect anything possibly could 
  1110. happen, since I've tried it myself, but it could scare 
  1111. you there for a moment. :-) 
  1112.  
  1113. Anyways, I hope you can find this useful. That's what 
  1114. it's here for. 
  1115. @@RFP        -G 
  1116. RFP: An HP48G/GX version of RF by Lutz Vieweg. 
  1117. An object packer. (RFU is the unpacker). 
  1118. Like PKZIP for the HP48G/GX. 
  1119.  
  1120. This version is for the G Series. If you have an 
  1121. HP48S/SX, then use RF as it has appeared on GD5, 7, or 8. 
  1122.  
  1123. If you want an object packer that works on BOTH the SX 
  1124. and the GX, then see COMPRESS.LIB above. 
  1125.  
  1126. RFP shortens RPL programs typically to about 60% of their 
  1127. size, ML programs about 70-80%, and graphics become 
  1128. smaller approximately like when you use the 
  1129. "GraphicObject compresser" published in the past. [Note: 
  1130. Lutz is referring to PGROB and UPGROB by Erik Bryntse, 
  1131. available on GD6. -jkh-] 
  1132.  
  1133. The instructions are rather brief: 
  1134.  
  1135. RFP . . . compresses an object in level one; if 
  1136. compression is impossible, the object is left unchanged 
  1137. on level 1. 
  1138.  
  1139. RFU . . . uncompresses a string created by RFP 
  1140.  
  1141. That's the whole thing! 
  1142.  
  1143. [Note: Do not be alarmed if the display turns off and the 
  1144.  annunciators blink fitfully while RF is running. RF 
  1145.  turns the display off on purpose (it can run faster that 
  1146.  way) and uses the annunciators for scratch memory (which 
  1147.  also provides you with something to look at while 
  1148.  waiting). -jkh-] 
  1149.  
  1150. It's a good idea to put RFU in your HOME directory, so 
  1151. any program can unpack itself without problems. 
  1152.  
  1153. Hope to stay in contact, 
  1154.  
  1155.                           Lutz Vieweg. 
  1156. @@RFU        -G 
  1157. RFU, a G/GX version of RFU by Lutz Vieweg. 
  1158. Unpacks objects packed by RFP; see RFP for complete 
  1159. details. 
  1160. @@SCH48v20   SG 
  1161. ííííííííííííííííííííííííííííííííííííííííííííííííííííííííí 
  1162.  
  1163.                     SCH48 VERSION 2.0 
  1164.                  A SCHEDULER FOR THE HP48 
  1165.                   by William J. Levenson 
  1166.  
  1167. ííííííííííííííííííííí AUTHOR'S NOTE ííííííííííííííííííííí 
  1168.  
  1169. I am very pleased with the way SCH48 has turned out, 
  1170. thanks to the many valuable suggestions I have received 
  1171. from users. Version 2.0 should be the last revision, 
  1172. barring any bugs which, of course, I will fix. It has 
  1173. been both an enjoyable and educational project and I am 
  1174. working on a few more. I hope SCH48 proves useful to 
  1175. you! 
  1176.  
  1177. íííííííííííííííííííííííí UPDATES íííííííííííííííííííííííí 
  1178.  
  1179. CHANGES FROM VERSION 1.2: 
  1180.  
  1181. *  The TakeOver commands that were removed in version 1.2 
  1182. have been put back. It turns out they are needed if 
  1183. SCHED is executed from the command line. This should 
  1184. have only caused the calculator to hang forcing you to do 
  1185. ON-C (a warm-start) without any memory corruption. No 
  1186. one complained about this so I guess no one executes 
  1187. SCHED from the commandline. 
  1188.  
  1189. *  Repeating alarm capabilities have been added. 
  1190. Repeating alarms show up on the future days to which they 
  1191. will be rescheduled. The repeat alarms on future days can 
  1192. be switched off to improve speed. An "R" in the upper 
  1193. part of the display is shown in reverse if future repeat 
  1194. alarms are displayed. The description of the alarm to 
  1195. the right will have a "(RPT)" added to it if it is a 
  1196. future position of a repeat alarm. 
  1197.  
  1198. SCH48 recognizes only repeat intervals greater than one 
  1199. day. To display repeat alarms with shorter intervals 
  1200. would be cumbersome and, in my opinion, of little use. 
  1201.  
  1202. SCH48 can set repeating alarms with repeat intervals that 
  1203. are an integral number of days. Again, shorter intervals 
  1204. would be better served by using the built-in HP ALARM 
  1205. function. 
  1206.  
  1207. *  Control alarms are now supported and can be edited and 
  1208. set within SCH48. The prompt is a little different for 
  1209. setting alarms. For appointment alarms, a string 
  1210. delimiter (") is required so that the alarm EXEC will be 
  1211. interpretted as a string. For control alarms, the 
  1212. argument on the command line must evaluate to a single 
  1213. object or it will be considered invalid. This can be any 
  1214. object (e.g. program, list, etc.). The command line will 
  1215. be evaluated as it would if you were inputting to the 
  1216. stack so 
  1217.  
  1218. 1 2 3 + +   would store the real number 6 as the alarm 
  1219.             EXEC 
  1220.  
  1221. << 1 2 3 + + >> would store this as a program in the 
  1222.                 alarm EXEC 
  1223.  
  1224. 1 2 3 +     would be invalid because it left two arg's on 
  1225.             the stack 
  1226.  
  1227. "1 2 3 + +"  would set an appointment alarm with the 
  1228.              string as the EXEC 
  1229.  
  1230. Get it? 
  1231.  
  1232. *  Marks in the form of one pixel to the right of each 
  1233. day indicate an alarm set for that day. This display can 
  1234. be turned off for the sake of speed. A pixel in the 
  1235. upper part of the display will be shown in reverse if 
  1236. date marks are on. 
  1237.  
  1238. *  More key definitions for scrolling and moving months 
  1239. and years. In general, unshifted and right-shifted arrow 
  1240. keys move the date cursor; left-shifted arrow keys scroll 
  1241. the screen; right- shift-OFF turns the calc off; 
  1242. right-shift NXT moves the time and date cursors to the 
  1243. current time and date;  +/- key toggles the future 
  1244. repeating alarm displays;  EEX key toggles whether days 
  1245. with alarms are marked with a pixel. Other keys behave 
  1246. the same as before. 
  1247.  
  1248.  
  1249. CHANGES FROM VERSION 1.1: 
  1250.  
  1251. All the sys-RPL TakeOver commands were removed from the 
  1252. key definitions. This results in a savings of over 50 
  1253. bytes. 
  1254.  
  1255. I have investigated whether the TakeOver commands are 
  1256. needed and came to the conclusion they are not for this 
  1257. application. This change has not given me any problems 
  1258. but no one has definitively explained the useage of 
  1259. TakeOver.  If someone has a problem with this or can 
  1260. think of a possible problem, please let me know. Thanks! 
  1261.  
  1262. CHANGES FROM VERSION 1.0 (ORIGINAL VERSION): 
  1263.  
  1264. Two minor bugs were found and fixed. One involved the 
  1265. STD mode setting on the HP48. In version 1.0, the 
  1266. calender display was unless STD mode was used. This has 
  1267. been fixed. 
  1268.  
  1269. The other bug involved update of the appointments when 
  1270. keys were quickly pressed. Sometimes, the appointments 
  1271. would not match the day. Noone seems to have noticed 
  1272. this, but I did and it is fixed. 
  1273.  
  1274. Two features were added. A copy function copies an 
  1275. entire alarm to a different day. This is intended to 
  1276. compensate for the lack of repeating alarms in SCH48. 
  1277. Try this option to see if repeating alarms are still 
  1278. necessary. Let me know...Is this good enough or should I 
  1279. work on the repeating stuff?  The scanning of repeating 
  1280. alarms to correctly indicate them on future dates might 
  1281. slow SCH48 down - how much, I don't know yet. 
  1282.  
  1283. An edit feature has also been added to allow you to 
  1284. change the alarm text without deleting and resetting. I 
  1285. found this handy. 
  1286.  
  1287. íííííííííííííííííííííí DESCRIPTION íííííííííííííííííííííí 
  1288.  
  1289. SCH48 is a library written entirely in system RPL and ML 
  1290. which allows the HP48 to function as an electronic 
  1291. "DAYTIMER". The intent is to replace the "ALARMS" catalog 
  1292. in the HP48 for a more useful and intuitive 
  1293. representation of appointments, events or blocks of time. 
  1294.  
  1295. SCH48 uses the existing ALARM functions built into the 
  1296. HP48. BUT...the user interface is improved (I hope). The 
  1297. SCH48 library contains two commands, D->CAL and SCHED. 
  1298.  
  1299. D->CAL merely takes a date from the stack and displays 
  1300. the calender for that month. The stack diagram is: 
  1301.  
  1302.       ( date íí  ) 
  1303.  
  1304. where "date" is in MM.DDYYYY or DD.MMYYYY format, 
  1305. depending on the HP48 setting. If YYYY is omitted, the 
  1306. current year is assumed. If a whole real number is 
  1307. input, it is interpreted as the month of the current 
  1308. year. 
  1309.  
  1310. SCHED is the primary function of the library. When this 
  1311. command is executed, a calender is displayed with the 
  1312. current day highlighted. To the right of the calender is 
  1313. a listing of the current ALARMs that are scheduled for 
  1314. the day. These alarms can be entered as a single point 
  1315. in time or as a block of time. The time or block of time 
  1316. is reflected in the listing of alarms. Below the 
  1317. calender is a 24 hour time-line which shows the times of 
  1318. the listed alarms blacked out. In this way, you can see 
  1319. graphically, how much of your day has been scheduled. 
  1320.  
  1321. I have attempted to present as much data as possible on a 
  1322. single screen for quick viewing, but the alarm text 
  1323. listings may extend beyond the window. Scrolling is 
  1324. provided for this. 
  1325.  
  1326. Once the SCHED is started, it is fairly 
  1327. self-explainatory. Alarms can be set, deleted (and 
  1328. acknowledged), moved, and edited. I have tried to make 
  1329. the functional keys intuitive. 
  1330.  
  1331. I thought about adding a help function but it seemed to 
  1332. be a waste of memory, so I'll leave it to you to read the 
  1333. documentation. 
  1334.  
  1335. íííííííííííííííííííí KEY DEFINITIONS íííííííííííííííííííí 
  1336.  
  1337. ííííííííííííííííííííííííííííííííííííííííííííííííííííííííí 
  1338. NO SHIFT KEYS: 
  1339. ííííííííííííííííííííííííííííííííííííííííííííííííííííííííí 
  1340.  
  1341. KEY            DEFINITION 
  1342.  
  1343. {A}             Scroll the screen fully to the left 
  1344.                 (JUMPLEFT) 
  1345.  
  1346. {F}             scroll the screen fully to the right 
  1347.                 (JUMPRIGHT) 
  1348.  
  1349. {up arrow} 
  1350. {down arrow} 
  1351. {left arrow} 
  1352. {right arrow}   Move the date cursor on the calender 
  1353.  
  1354. {NXT}           Go to the next alarm 
  1355.  
  1356. {ENTER}         Set the alarm - the user will be prompted 
  1357.                 for the alarm text. If a time has been 
  1358.                 marked (see {*} key), a block of time 
  1359.                 will be set; if not, a single time will 
  1360.                 be set. ATTN at the prompt will erase the 
  1361.                 contents of the command line if it is 
  1362.                 present. ATTN without a commandline, 
  1363.                 aborts the setting of the alarm. ENTER 
  1364.                 enters the alarm text. 
  1365.  
  1366. {DEL}           Deletes the alarm if the time cursor is 
  1367.                 pointing at an alarm block on the 
  1368.                 timeline. If the time cursor is not 
  1369.                 pointing at an alarm, a error beep will 
  1370.                 be generated. 
  1371.  
  1372. {LEFT-SHIFT}    Activates left shift mode 
  1373.  
  1374. {RIGHT-SHIFT}   Activates right shift mode 
  1375.  
  1376. {*}             (This is the "multiply" key) sets one end 
  1377.                 of a block of time on the time-line. 
  1378.                 {ENTER} determines the other end of the 
  1379.                 block of time. 
  1380.  
  1381. {-}             Moves the time cursor 15 minutes to the 
  1382.                 left (hold down for repeat) 
  1383.  
  1384. {+}             Moves the time cursor 15 minutes to the 
  1385.                 right (hold down for repeat) 
  1386.  
  1387. {+/-}           Toggle the display of future repeat 
  1388.                 alarms 
  1389.  
  1390. {EEX}           Toggle the display of marks on days with 
  1391.                 alarms 
  1392.  
  1393. ATTN            Ends SCHED 
  1394.  
  1395.  
  1396. ííííííííííííííííííííííííííííííííííííííííííííííííííííííííí 
  1397. LEFT SHIFT KEYS:                                                
  1398. ííííííííííííííííííííííííííííííííííííííííííííííííííííííííí 
  1399.  
  1400. KEY            DEFINITION 
  1401.  
  1402. {up arrow} 
  1403. {down arrow}    Scrolls the screen up and down. This is 
  1404.                 necessary if a lot of alarms are set on a  
  1405.                 single day (the listing may extend beyond  
  1406.                 the bottom of the screen). Hold the key 
  1407.                 down to continue scrolling. 
  1408.  
  1409. {right arrow} 
  1410. {left arrow}    Scrolls the screen left and right. Hold 
  1411.                 the key down to continue scrolling. 
  1412.  
  1413. {PREV}          Go to the previous alarm 
  1414.  
  1415. {LEFT-SHIFT}    Disables left shift mode 
  1416.  
  1417. {RIGHT-SHIFT}   Activates right shift mode 
  1418.  
  1419. {-}             Moves the time cursor 1 minutes to the 
  1420.                 left (hold down for repeat) 
  1421.  
  1422. {+}             Moves the time cursor 1 minutes to the 
  1423.                 right (hold down for repeat) 
  1424.  
  1425. {EDIT}          Edits the EXEC of the alarm that the time 
  1426.                 cursor is pointing to. ATTN at the prompt 
  1427.                 will erase the contents of the command 
  1428.                 line if it is present. ATTN without a 
  1429.                 commandline deletes the alarm. If you 
  1430.                 enter the EDIT function, and change your 
  1431.                 mind, ENTER will reset the alarm with the 
  1432.                 text indicated. Or, you can attention 
  1433.                 out of the EDIT and reset the alarm with 
  1434.                 the {LEFT SHIFT - ENTER} function. 
  1435.                 CONTROL alarms cannot be edited this way. 
  1436.                 If you accidentally try to edit a CONTROL 
  1437.                 alarm, ATTN out of the EDIT and reset the 
  1438.                 alarm using {LEFT SHIFT - ENTER}. 
  1439.  
  1440. {ENTER}         Copies the alarm from the last DEL, NXT, 
  1441.                 PREV EDIT, or ENTER command to the 
  1442.                 current day. Use this feature to move, 
  1443.                 copy (repeat), an alarm by using one of 
  1444.                 the above commands to indicate the alarm 
  1445.                 of interest, move to a different day and 
  1446.                 set the alarm with the same time block 
  1447.                 and EXEC on that day. CONTROL alarms can 
  1448.                 use this too. 
  1449.  
  1450. ííííííííííííííííííííííííííííííííííííííííííííííííííííííííí 
  1451. RIGHT SHIFT KEYS:                                                
  1452. ííííííííííííííííííííííííííííííííííííííííííííííííííííííííí 
  1453.  
  1454. KEY            DEFINITION 
  1455.  
  1456. {up arrow} 
  1457. {down arrow}    Move the date cursor 4 weeks at a time 
  1458.  
  1459. {left arrow} 
  1460. {right arrow}   Move the date cursor 1 year at a time 
  1461.  
  1462. {LEFT-SHIFT}    Activates left shift mode 
  1463.  
  1464. {RIGHT-SHIFT}   Disables right shift mode 
  1465.  
  1466. {NXT}           Move time and date cursors to the current 
  1467.                 time and date 
  1468.  
  1469. {-}             Moves the time cursor 1 hour to the left 
  1470.                 (hold down for repeat) 
  1471.  
  1472. {+}             Moves the time cursor 1 hour to the right 
  1473.                 (hold down for repeat) 
  1474.  
  1475. {OFF}           Turn calculator off 
  1476.  
  1477. íííííííííííí FEATURES, LIMITATIONS, AND BUGS??? ííííííííí 
  1478.  
  1479. An alarm can be moved by first deleting it. The alarm 
  1480. text is copied and will be the default the next time an 
  1481. alarm is set. Use this method if the time needs to be 
  1482. adjusted. If you only want to change the day, use {LEFT 
  1483. SHIFT - ENTER} 
  1484.  
  1485. An alarm can be copied by going to it by means of {NXT} 
  1486. or {PREV}. Again, the text will be copied and offered as 
  1487. a default the next time an alarm is set. Again, if only 
  1488. the day is to be changed, use {LEFT SHIFT - ENTER} 
  1489.  
  1490. To delete an alarm, move the cursor to the alarm block or 
  1491. use {NXT} or {PREV} and press {DEL}. 
  1492.  
  1493. An alarm may not show up on the time-line of it is a 
  1494. block alarm which spans less than 7 minutes. It cannot 
  1495. be edited or removed in SCH48 either. I didn't think 
  1496. this was much of a limitation, but if you don't like it, 
  1497. I can fix it. 
  1498.  
  1499. CONTROL ALARMS can now be set using SCHED. Any alarm 
  1500. EXEC that is not a string is set as a control alarm, just 
  1501. as the HP internal alarms work. The alarm EXEC must be a 
  1502. single object. The input line is treated just as the 
  1503. command line is treated when in the stack display. If 
  1504. more that one object result from the input line contents, 
  1505. an invalid EXEC error will occur and you will be prompted 
  1506. to alter the input. In most cases, the EXEC will be 
  1507. either a string, which must be surrounded by double 
  1508. quotes, or as a program which must be surrounded by << 
  1509. >>. The default prompt starts with  two double quotes so 
  1510. that appointment alarms can be input easily. Remember, 
  1511. if you start over with ATTN to erase the input line of an 
  1512. appointment alarm, you must add a double quote mark. 
  1513.  
  1514. REPEAT alarms with repeat intervals that are an integral 
  1515. number of days can also now be set in SCHED. To do this, 
  1516. you must use the * (or multiply key) to mark the day to 
  1517. set the repeating alarm on (this also sets the endpoint 
  1518. of the alarm span but if the time cursor is not moved, 
  1519. the time span will be zero). Now, move to the day you 
  1520. wish to have the first repeat alarm appear and press 
  1521. ENTER (you can also move backwards the number of days you 
  1522. wish the time interval to be). 
  1523.  
  1524. The copy function is still available using 
  1525. left-shift-ENTER if you prefer that over the repeat 
  1526. alarms. 
  1527.  
  1528. SCHED should operate correctly with any HP48 time/date 
  1529. settings. I primarily use a 24 hour clock and MM.DDYYYY 
  1530. settings and haven't experienced any problems. 
  1531.  
  1532. Alarms not set from inside SCHED should work fine with 
  1533. the following exception. In order to set block times, 
  1534. the alarm time is set with the "begin" time as the time 
  1535. of the alarm. The end time is indicated by the fractional 
  1536. seconds of the alarm time. That's not clear, how about 
  1537. an example: 
  1538.  
  1539.       An alarm from 8:15 a.m. to 11:45 a.m. is set with 
  1540.       an alarm time = 08.15001145 
  1541.  
  1542. If an alarm is created with arbitrary fractional seconds, 
  1543. the time-line may end up looking a little strange but no 
  1544. damage will be done. 
  1545.  
  1546. This carries with it another minor limitation that the 
  1547. end time of the alarm will be rounded to the nearest 5 
  1548. minute interval. This is necessary because of accuracy 
  1549. problems with those fractional seconds (trust me). I may 
  1550. be able to fix this if enough of you wish it. 
  1551.  
  1552. Past due alarms will be acknowledged when they are 
  1553. deleted from within SCHED. The alarms will behave just 
  1554. like the HP48 handbook describes for appointment alarms. 
  1555. If you don't want the beeper going off, set flag -57. 
  1556.  
  1557. The display of marks on the days with alarms can slow 
  1558. SCH48 quite a bit when moving from month to month. Also, 
  1559. the display of future repeating alarms can slow things. 
  1560. For instance, if you have a repeating alarm with an 
  1561. interval of one day, every day will have a mark by it 
  1562. indicating that this repeating alarm will show up each 
  1563. day. If you want the marks but don't want the future 
  1564. repeat alarms, hit the +/- key to toggle this function. 
  1565. Then, only the original alarms will be shown with marks 
  1566. by the day and on the right side of the screen where the 
  1567. current days alarms are listed. If you don't marks at 
  1568. all (a lot of alarms will also slow things down a bit), 
  1569. then toggle this function using the EEX key. Both 
  1570. function are indicated in the upper part of the screen 
  1571. with an inverse "R" for the repeat function and an 
  1572. inverse single pixel for the mark function. If these are 
  1573. not shown in reverse, then they are off. 
  1574.  
  1575. The start up state of the mark and repeat functions is 
  1576. set by the system flag -43 (reschedule unacknowledged 
  1577. repeating alarms - if set, alarms are not rescheduled) 
  1578. and system flag -59 (fast catalog display - set and the 
  1579. marks on the dates are not initially shown). So if you 
  1580. don't use repeating alarms, things will be a little 
  1581. faster in SCH48 if you set flag -43. And if you don't 
  1582. want the marks, set flag -59. If these functions are 
  1583. toggled from withing SCH48, the system flags will be 
  1584. unaffected. 
  1585.  
  1586. ííííííííííííííííííííí CREDITS ííííííííííííííííííííííííííí 
  1587.  
  1588. SCH48 was written in system RPL and ML using the 
  1589. excellent RPL48 package written by Detlef Mueller and 
  1590. Raymond Hellstern. 
  1591.  
  1592. The SCH48 library was created using <-LIB->, again by 
  1593. Detlef Mueller, Raymond Hellstern, Rick Grevelle. 
  1594.  
  1595. THANKS to all of you for a tremendous contribution to the 
  1596. HP48 world!! 
  1597.  
  1598. Thanks also to HP for the RPL TOOLS and, especially, the 
  1599. RPLMAN documentation. And, of course, thanks to HP for 
  1600. such a versatile calculator. 
  1601.  
  1602. Thanks to Mika Heiskanen and other contributors to the 
  1603. entries lists that were posted at seq.uncwil.edu. 
  1604.  
  1605. Thanks to Jan Brittenson, whose MLDL was a great help. 
  1606.  
  1607. Thanks to Chris Spell for his tireless maintainance of 
  1608. comp.sources.hp48 and the archives. 
  1609.  
  1610. And thanks to all the helpful 48'ers who helped me get 
  1611. this far. I hope this will be a useful partial payback 
  1612. with, hopefully, more to come. 
  1613.  
  1614. ííííííííííííííííííííí DISCLAIMER íííííííííííííííííííííííí 
  1615.  
  1616. I have not had any problems with SCH48 while using it on 
  1617. my HP48-D but...It does contain some unsupported entry 
  1618. points. Although they have appeared on several of the 
  1619. "entries" lists, that doesn't guarantee that they will 
  1620. work the same on other revisions of the HP48. With that 
  1621. in mind...Have fun SCHeduling and certainly let me know 
  1622. of any problems! 
  1623.  
  1624.  
  1625. íííííííííííííííííí COPYRIGHT NOTICE ííííííííííííííííííííí 
  1626.  
  1627.     Copyright (c), 1992, W.J. Levenson. 
  1628.     Permission to copy this article is granted provided 
  1629.     that the copies are not made or distributed for 
  1630.     resale (excepting nominal copying fees). Other 
  1631.     permissions can be arranged by contacting W.J. 
  1632.     Levenson via email at the following address: 
  1633.     akcs.levenson@hpcvbbs.cv.hp.com 
  1634.  
  1635.     or by U.S. Mail at 
  1636.  
  1637.     12558 Caminito Mira Del Mar 
  1638.     San Diego, CA  92130 
  1639.     USA 
  1640.  
  1641.     SCH48 is distributed in the hope that it will be 
  1642.     useful, but WITHOUT *ANY* WARRANTY. 
  1643.  
  1644.     This software is LET-ME-KNOW-WARE. Please let me 
  1645.     know if you like it or not and any improvements you 
  1646.     would like to see. But MONEY will be accepted in lieu 
  1647.     of the above!! 
  1648.  
  1649. ííííííííííííííííííííííííí INSTALLATION íííííííííííííííííí 
  1650.  
  1651.     To install SCH48, a) download the ASC version, 
  1652.     execute ASC->, or b) download the uudecoded version 
  1653.     and recall it into the stack. Purge the variable 
  1654.     which contains the orginal copy. Enter the port 
  1655.     number (0,1,2) where you want to store SCH48 and 
  1656.     press STO. Switch the HP48 off, then on again. SCH48 
  1657.     will now be installed. 
  1658.  
  1659.  
  1660. SIZE = 4854.5 bytes 
  1661. HP48 CHECKSUM = # D4FBh 
  1662. @@SMTK       S- 
  1663. SmartKeys version 1.59 by Simone Rapisarda. 
  1664. Upgrade from version 1.23 which was on GD7. 
  1665. This brief description written by Joe Horn. 
  1666.  
  1667. For S/SX only.  G/GX version is not yet available. 
  1668.  
  1669. Facilitates the creation, management, and deletion of 
  1670. system-level key assignments and menus. Allows multiple 
  1671. custom menus.  This is one of the libraries that is 
  1672. ALWAYS in my HP48 SX, it's so useful. 
  1673.  
  1674. The complete documentation is over 70K, and formatted to 
  1675. 66 lines per page (see LASER66 above), with table of 
  1676. contents.  It's too big to fit in this DOC viewer.  If 
  1677. you go into the UTILS subdirectory on this disk, and copy 
  1678. the SMTK.EXE program onto your hard disk and run it 
  1679. there, it'll create the document.  Then you can view or 
  1680. print it with the LIST.COM program, also on this disk. 
  1681. @@TELE32     SG 
  1682.                 Éíííííííííííííííííííííííí» 
  1683.                 º TELEPHONE LIBRARY V3.2 º 
  1684.                 º      By David Bal      º 
  1685.                 º         9/1/93         º 
  1686.                 èíííííííííííííííííííííííí¼ 
  1687.  
  1688.       ***  THIS PROGRAM WILL WORK ON THE HP48.GX ** 
  1689.   
  1690.        This is another telephone library. It is a menu 
  1691. driven program that stores the data file as a backup 
  1692. object in any port you choose. This allows the user to 
  1693. keep the original 30k of RAM free of misc. files. One 
  1694. draw back from this format is that the program requires 
  1695. about two times the size of the data file ($TELE) in free 
  1696. RAM to run. This means that if your data file is 5K long 
  1697. you need >10k to fully use the library. The library will 
  1698. run all applications at lower memory levels but editing, 
  1699. adding, or purging from the data file will not be 
  1700. possible. 
  1701.  
  1702. I. Downloading the library 
  1703.  
  1704.      1.  Run KERMIT on your PC and connect the calculator 
  1705.      2.  Type SET PORT 1(or what ever port) 
  1706.      3.  Type SET BAUD 9600 
  1707.      4.  Put your calculator in KERMIT SERVER mode by 
  1708.          pressing right-shift PRG on the S/SX, or 
  1709.          right-shift right-arrow on the G/GX. 
  1710.      5.  Send the library by typing SEND TELE.LIB 
  1711.      6.  After a few seconds the transfer will be 
  1712.          complete 
  1713.      7.  Using the BYTES command check if the library is 
  1714.          4473 bytes with a checksum of # 5D05h 
  1715.  
  1716. II.  Starting the library 
  1717.       
  1718.      1.  After downloading recall 'TELE.LIB'. Your stack 
  1719.          should Show 1: Library 1103:  TEL...  Type 0 STO 
  1720.          to store it into port 0. 
  1721.      2.  After storing the library in port 0 you can 
  1722.          erase the other copy by typing 'TELE.LIB' PURGE. 
  1723.      3.  Now shut the calculator off and turn it on. 
  1724.      4.  The library will self-attach. 
  1725.      5.  Press LIBRARY and TELE should appear named 
  1726.          "TELE V3.2 (c)93 David Bal" 
  1727.      6.  The only command in the library is TELE which 
  1728.          activates the telephone directory. 
  1729.  
  1730. III. Creating a storage variable (named $TELE) 
  1731.       
  1732.      1.  After activating the telephone directory the 
  1733.          main menu should appear like: 
  1734.  
  1735.                               TELEPHONE DIRECTORY 
  1736.                           ->Browse All 
  1737.                             Add New Person 
  1738.                             Search By Last Name 
  1739.                             Search By First Name 
  1740.                             Search By Phone Numb.. 
  1741.                             Search By Street Add... 
  1742.                                                     EXIT 
  1743.  
  1744.      2.  If you have never added anyone to the data list 
  1745.          you will need to create a data file. By 
  1746.          pressing enter from the main menu (it does not 
  1747.          matter which element the arrow is pointing to) 
  1748.          you will be asked where you want the empty data 
  1749.          file to be stored. All available ports 
  1750.          (0,1,2)will be options. Press 0 for port 0 
  1751.          (most people will do this) 1 for port 1 and so 
  1752.          on. 
  1753.  
  1754. IV   Active Keys 
  1755.  
  1756.      1.  The up-arrow and down-arrow will move the 
  1757.          pointer up or down one element. 
  1758.      2.  Left-shift up or down arrow will move the 
  1759.          pointer up or down six elements respectively (if 
  1760.          the list size if < 12 The pointer will move to 
  1761.          the top or bottom if the list.) 
  1762.      3.  Right-shift up or down arrow will move the 
  1763.          pointer to the top and bottom of the list 
  1764.          respectively. 
  1765.      4.  ENTER and [right-shift] [+/-] will view the 
  1766.          current item. 
  1767.      5.  ON will exit the program in all cases except 
  1768.          when viewing an item. 
  1769.  
  1770. V    Adding a new person to the list 
  1771.  
  1772.      1.  There are two ways to add a new person. Adding 
  1773.          from the main menu or adding from a browse 
  1774.          screen by pressing NEW. 
  1775.      2.  The input cursor is on alpha-lock. 
  1776.      3.  After imputing the eight elements. Any or all 
  1777.          can be left blank. The new file will be 
  1778.          displayed as if being viewed. If it is 
  1779.          acceptable press ENTER. If you wish to edit 
  1780.          press any other key (ATTN will do). The same 
  1781.          eight input questions will be asked with your 
  1782.          old input already there. 
  1783.  
  1784. VI.  Browsing All 
  1785.  
  1786.      1.  After choosing browse all your entire list of 
  1787.          names will be put onto the browser. If you have 
  1788.          no files it will tell you so. 
  1789.      2.  Six new hot keys will appear. EDIT, NEW, PURG, 
  1790.          ->STK, PRINT, and UP. 
  1791.      3.  EDIT will edit the file and replace the old one 
  1792.          with your new one. This is just like Adding a 
  1793.          new person. 
  1794.      4.  NEW will add a new person 
  1795.      5.  PURG will ask you if you really want to delete 
  1796.          the person. Press [ENTER] to delete. Any other 
  1797.          key to abort. 
  1798.      6.  ->STK will ask you "SEND WHAT?" press ALL or 
  1799.          ONE. If you press ALL the entire list will be 
  1800.          sent to the stack displaying the % complete. 
  1801.      7.  PRINT is much like ->STK. By pressing ONE will 
  1802.          print the person at the pointer. ALL will print 
  1803.          the entire list displaying the % complete. 
  1804.      8.  UP will move you to the main menu. 
  1805.         
  1806. VII. Searching 
  1807.  
  1808.      1.  When searching for a particular string the 
  1809.          program looks for any element that has the same 
  1810.          beginning characters. 
  1811.  
  1812.           EX. 
  1813.                Search By First Name 
  1814.                First Name 
  1815.  
  1816.  
  1817.                Je 
  1818.           The program will find all people whose first 
  1819.           names begin with "Je". "Jen", "Jennifer", even 
  1820.           "Jeneseque" will be accepted. This current 
  1821.           version does not except wild card characters. 
  1822.           The program is caps sensitive. 
  1823.  
  1824.      2.  While the program is searching the number found 
  1825.          will be displayed along with the % complete. If 
  1826.          you are satisfied with the # found you can press 
  1827.          ATTN to abort further searching and browse the 
  1828.          ones found. For example if you are searching 
  1829.          for "Fred" and know that you only have one 
  1830.          "Fred" and the program has displayed "1 found" 
  1831.          you can press ATTN and browse the one found. The 
  1832.          searching program searches in reverse 
  1833.          alphabetical order (from Z to A). 
  1834.  
  1835. VIII.Last Words 
  1836.  
  1837.      I, David Bal, express no warranty for this program. 
  1838. Even though I have thoroughly tested the program it might 
  1839. contain a devastating bug. Always keep a current backup 
  1840. of all memory before testing it. 
  1841.   
  1842.   This program is released as FREEWARE. 
  1843.  
  1844. David Bal 
  1845.  
  1846. Smail: 
  1847. 514 SW 34th St #17 
  1848. Gainesville, FL 32607 
  1849.  
  1850. Email: yoda@ufcc.ufl.edu or yoda@hpcvbbs.cv.hp.com 
  1851. @@TIMEKEEP   SG 
  1852. (Comp.sys.handhelds) 
  1853. Item: 532 by edp at deland.enet.dec.com 
  1854. Author: [Eric Postpischil] 
  1855.   Date: Sun Jul 01 1990 
  1856.  
  1857. [Note: The HP48's clock isn't terribly accurate. So HP 
  1858.  wrote a program called 'CLK' (on Goodies Disk #8) which 
  1859.  "kicks" the clock every so often to correct for the 
  1860.  clock's drift. But 'CLK' is 2K in size and a tad 
  1861.  unwieldy to use. So Eric wrote a better clock adjuster. 
  1862.  -jkh-] 
  1863.  
  1864. Here's a set of timekeeping routines that compensate for 
  1865. inaccuracy in the 48's clock. (They could also be used 
  1866. to keep sidereal time.) 
  1867.  
  1868. In a list called CLKDAT (clock data), there are, in 
  1869. order: 
  1870.  
  1871.           o The value of TICKS at the start of some 
  1872.             reference period. 
  1873.  
  1874.           o The cumulative number of ticks added to the 
  1875.             clock since then. 
  1876.  
  1877.           o The difference between true time and clock 
  1878.             time as a fraction of the number of elapsed 
  1879.             clock ticks (called "accuracy factor"). 
  1880.  
  1881. The following routines are provided: 
  1882.  
  1883. KICK      Called with no arguments to update the clock by 
  1884.           the correct number of ticks. 
  1885.  
  1886. ADJT      Called with a unit object specifying an amount 
  1887.           of time by which to change the time zone or 
  1888.           system. E.g., call ADJT with -1_h on the stack 
  1889.           to change from Daylight Savings to Standard 
  1890.           Time. 
  1891.  
  1892. ADJC      Called to adjust the clock by a specified 
  1893.           number of ticks. Once the clock is set exactly 
  1894.           with ADJC, EXACT should be called or the data 
  1895.           will be lost when KICK is next called. 
  1896.  
  1897. EXACT     Uses the cumulative number of ticks added to 
  1898.           the clock, by KICK and by ADJC, to compute a 
  1899.           new accuracy factor. 
  1900.  
  1901. SCHEDULE 
  1902.           Schedules an alarm at 4 a.m. to call KICK 
  1903.           daily. 
  1904.  
  1905. CANCEL 
  1906.           Cancels the alarm. 
  1907.  
  1908. RESET     Set a new reference time and discard cumulative 
  1909.           ticks added. Keep the old accuracy factor until 
  1910.           a new one is computed. 
  1911.  
  1912. To use these timekeeping routines: 
  1913.  
  1914.           o Set the time with the built-in functions. 
  1915.           o Make the clock as exact as desired with 
  1916.             CLKADJ. 
  1917.           o Execute RESET (no arguments). 
  1918.           o After using RESET, do not use the built-in 
  1919.             time adjustment commands. 
  1920.           o Let time pass. 
  1921.           o Make the clock as exact as desired with ADJC. 
  1922.             (ADJC takes as an argument a number of ticks, 
  1923.             just as CLKADJ does.) 
  1924.           o Execute EXACT. 
  1925.           o Execute SCHEDULE. 
  1926.  
  1927. Every night at 4 a.m., KICK will update the clock. 
  1928.  
  1929. After the initial setting, you can update the accuracy 
  1930. factor by again adjusting the clock with ADJC and 
  1931. executing EXACT. If your calculator's environment 
  1932. changes, you can establish a new reference time by making 
  1933. the clock exact and executing RESET. This keeps the 
  1934. current accuracy factor but resets the reference time, so 
  1935. the next execution of EXACT will base the new accuracy 
  1936. factor on the time elapsed since RESET. 
  1937.  
  1938. To change time zones or systems, use ADJT. 
  1939.  
  1940. o If you call ADJC by accident, call KICK to correct it. 
  1941.  
  1942. o If you call ADJT by accident, call it again with the 
  1943.   negation of the argument. 
  1944.  
  1945. o If you call EXACT by accident, you are out of luck 
  1946.   unless you have another copy of your accuracy factor. 
  1947.   If so, replace it in CLKDAT. 
  1948.  
  1949. KICK makes the clock correct by computing the number of 
  1950. ticks to add to the clock to make it correct now: 
  1951.  
  1952. (accuracy factor)*(TICKS - reference time - added ticks) 
  1953.     - added ticks 
  1954.  
  1955. Because this calculation is used rather than simply 
  1956. adding a fixed number of ticks at regular intervals, KICK 
  1957. can be called at any time, at frequent or infrequent 
  1958. intervals. Updating the clock daily keeps it close to 
  1959. the correct time. You can change the time of the alarm 
  1960. and the repeat interval in the SCHEDULE routine. (Be 
  1961. sure not to set a time that is skipped over. E.g., if you 
  1962. set the KICK alarm for 3 a.m. and also have an alarm that 
  1963. adds 1 hour to the clock at 2 a.m. for the change to 
  1964. Daylight Savings Time, then the clock will go from 
  1965. slightly after 2 a.m. to slightly after 3 a.m., and the 
  1966. KICK alarm will not be executed or scheduled for the next 
  1967. day.) 
  1968.  
  1969. SCHEDULE uses AO (alarm object) as the object for the 
  1970. alarm to execute. This object discards its argument, 
  1971. gets the current path, executes an object called JOB, 
  1972. restores the current path, and turns the calculator off. 
  1973. If an error occurs, the error message is left in the 
  1974. stack before shutting the calculator off. If a variable 
  1975. called JOB does not exist when SCHEDULE is executed, it 
  1976. is created as a list specifying the current directory and 
  1977. the KICK program. If you would like to add additional 
  1978. routines to be executed, add them to the list in JOB. 
  1979. JOB is created in the home directory but can be moved to 
  1980. any port. If you need to make more complicated changes, 
  1981. like removing the call to OFF, execute CANCEL, change the 
  1982. AO variable, and call SCHEDULE. 
  1983.  
  1984. KICK can be modified to adjust the clock so that it will 
  1985. be correct at some time in the future. E.g., you could 
  1986. arrange it so that KICK runs at 4 a.m. and adds the 
  1987. number of ticks needed to make the clock correct at 4 
  1988. p.m. By doing this, the clock is early part of the day 
  1989. and late part of the day, instead of only early or only 
  1990. late. This cuts in half the frequency with which KICK 
  1991. must be executed to keep the clock within a specified 
  1992. distance of the correct time. 
  1993.  
  1994. To make this modification to KICK, add the number of 
  1995. ticks to the number in stack level one just after the 
  1996. call to PA. For example, to adjust KICK to prepare the 
  1997. clock to be correct in 12 hours, put 
  1998.  
  1999.           353894400 + 
  2000.  
  2001. after the call to PA in KICK. 
  2002. @@TOSTW      SG 
  2003. TOSTW ( ->STW ) "To String, Wide"  by Joe Horn 
  2004.  
  2005. Same as "" +, but inserts newlines at wider positions, 
  2006. especially useful with the HP 82240 thermal printer. 
  2007.  
  2008. Intended for use with GPRT. See GPRT above for full 
  2009. documentation. 
  2010. @@XYMODEM2   S- 
  2011. (Comp.sys.hp48) 
  2012. Item: 1841 by alou@elde1.epfl.ch [Maurice Alou] 
  2013.           and westphal@elde.epfl.ch [Edouard Westphal] 
  2014. Subj: X&Y Modem v2.2 for Hp48S/SX 
  2015. Date: 05 Oct 1992 
  2016.  
  2017. [For S/SX only; XMODEM is already built into the G/GX] 
  2018.  
  2019. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  2020.                  X&Y Modem v2.2 for HP48 
  2021. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  2022.  
  2023. [Note: This obsoletes the XYMODEM.LIB on Goodies Disk #7. 
  2024. -jkh-] 
  2025.  
  2026. CHANGE FROM v2.0 : 
  2027. -The bug in ERRSET/ERRTRAP has been fixed. 
  2028. -The XLIB names have changed ! sorry. 
  2029.  
  2030. CHANGE FROM v2.1 : 
  2031. -The bug concerning the IOPAR has been fixed. [Namely, 
  2032.  now you don't need to worry about IOPAR at all. -jkh-] 
  2033.  
  2034. -The program checks battery level before beginning the 
  2035.  communication. 
  2036.  
  2037.  
  2038. SETUPXYM :  
  2039.   CRC  : toggle flag 57. If flag is true then CRC else 
  2040.          CHK. Used only with XModem in reception (CRC is 
  2041.          automaticaly choosen with YModem) 
  2042.   REPL : toggle flag -36 (see manual) 
  2043.   EXIT : do a lastmenu 
  2044.  
  2045. SENDM : 
  2046.   Send with X or Ymodem depending on the first stack 
  2047.   object : 
  2048.  
  2049.   1: global_name/local_name  -> 1: list       uses Ymodem 
  2050.      Equivalent to SEND Kermit command 
  2051.      example: 'ABC' 
  2052.  
  2053.   1: :IO:name                -> 1: list       uses Ymodem 
  2054.      Equivalent to ARCHIVE 
  2055.      example: :IO:Sep3 
  2056.  
  2057.   1: :port#:name             -> 1: list       uses Ymodem 
  2058.      send a library or a Backup object 
  2059.      example: i/  :0:1275     
  2060.               ii/ :&:ABC 
  2061.  
  2062.   1: list                    -> 1: list       uses Ymodem 
  2063.      send one or more objects listed above 
  2064.      example: { :IO:Sep3 :0:1275 :0:1092 FFT } 
  2065.  
  2066.   1: any                     ->               uses Xmodem 
  2067.      if the object isn't of a type listed above, it will 
  2068.      be sent with XModem protocol (see remark below). 
  2069.  
  2070.   The output list contains the unsent objects (the files 
  2071.   not found in the current path). 
  2072.  
  2073. RECX : 
  2074.   Receive with XModem protocol. Flag 57 specify CRC or 
  2075.   CHK. This command is usefull to receive a library on 
  2076.   stack. 
  2077.  
  2078.                              -> 1: object 
  2079.  
  2080. RECY : 
  2081.   Receive one or more files with YModem protocol. This 
  2082.   command is equivalent to the RECV command of Kermit. 
  2083.  
  2084.                              ->  
  2085.  
  2086.  
  2087. REMARKS: 
  2088.  
  2089. (1) 
  2090. Sending an object from the HP48 to a PC with Xmodem 
  2091. protocol (not Ymodem protocol) is not a good idea: this 
  2092. object cannot be received from HP48 with the standard 
  2093. RECV Kermit command. Why? Because Xmodem doesn't send the 
  2094. file header which contains the size in bytes of the 
  2095. object. This information is used by Kermit's RECV command 
  2096. to check if the file has been corrupted. So a file sent 
  2097. with Xmodem can be received only with Xmodem and Ymodem, 
  2098. not Kermit. 
  2099.  
  2100. In conclusion: 
  2101. - a file sent with Ymodem is safe: you can receive it 
  2102.   later with Kermit, Xmodem and Ymodem protocol. 
  2103.  
  2104. - a file sent with Xmodem is not safe: you can receive it 
  2105.   with only Xmodem and Ymodem protocol. 
  2106.  
  2107. (2) 
  2108. X&Ymodem automatically selects the serial port for the 
  2109. communication, and transfers are made in binary mode. So 
  2110. flags -33 and -35 have no effect. You can choose the 
  2111. speed (9600, 4800, 2400, 1200) in the SETUP submenu of 
  2112. the IO menu. 
  2113.  
  2114. (3) 
  2115. You must set the size of a block to 128 bytes (short 
  2116. block) in the configuration of your comunication program 
  2117. in your PC. 
  2118.  
  2119.  
  2120. KNOWN BUG : 
  2121. None. 
  2122.  
  2123.  
  2124. CREDITS: 
  2125.   Hewlett-Packard for their Tools. 
  2126.   Alonzo Gariepy for his Saturn Processor Notes. 
  2127.   Jan Brittenson for his Star and his MLDL library. 
  2128.   Detlef Mueller, Raymond Hellstern and Rick Grevelle for 
  2129.     their Library constructor. 
  2130.   Chuck Forsberg for his notes on the protocols XModem 
  2131.     and YModem. 
  2132.   And to all people who gave us a lot information about 
  2133.     Hp28, 48 on mail, news and FTP-server. 
  2134.  
  2135. Maurice Alou & Edouard Westphal 
  2136.  
  2137. alou@elde.epfl.ch 
  2138. westphal@elde.epfl.ch 
  2139.     
  2140. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  2141.           Do a backup with the standard ARCHIVE 
  2142.                 before using the library! 
  2143. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 
  2144.  
  2145. Library name : X-Y Modem v2.2 
  2146. Library ID   : 1275 
  2147. Size         : 3550 
  2148. Chk          : # 65E9h 
  2149.  
  2150. [Note: Despite their warnings, I've never had the XYMODEM 
  2151.  library cause me any grief, except that Ymodem sometimes 
  2152.  seems to fail for no apparent reason. I use this 
  2153.  library on all but the smallest files. -jkh-] 
  2154.